package com.yxx.business.service;

import java.util.List;

import com.yxx.business.entity.*;
import com.yxx.common.core.domain.PageResult;
import com.yxx.common.core.service.IServicePlus;

/**
 * 建材生产运输阶段Service接口
 *
 * @author yxx
 * @date 2025-08-16
 */
public interface ITbMaterialProductionPhaseService extends IServicePlus<TbMaterialProductionPhaseDo>, PhaseService {

    /**
     * 查询建材生产运输阶段分页结果
     *
     * @param tbMaterialProductionPhaseQueryDto 建材生产运输阶段查询实体
     * @return 建材生产运输阶段分页
     */
    public PageResult<TbMaterialProductionPhaseVo> selectTbMaterialProductionPhaseVoPage(TbMaterialProductionPhaseQueryDto tbMaterialProductionPhaseQueryDto);

    /**
     * 查询建材生产运输阶段Vo列表
     *
     * @param tbMaterialProductionPhaseQueryDto 建材生产运输阶段查询实体
     * @return 建材生产运输阶段集合
     */
    public List<TbMaterialProductionPhaseVo> selectTbMaterialProductionPhaseVoList(TbMaterialProductionPhaseQueryDto tbMaterialProductionPhaseQueryDto);

    /**
     * 查询建材生产运输阶段Do列表
     *
     * @param tbMaterialProductionPhaseQueryDto 建材生产运输阶段查询实体
     * @return 建材生产运输阶段集合
     */
    public List<TbMaterialProductionPhaseDo> selectTbMaterialProductionPhaseDoList(TbMaterialProductionPhaseQueryDto tbMaterialProductionPhaseQueryDto);

    /**
     * 查询单个建材生产运输阶段
     *
     * @param productionId 建材生产运输阶段主键
     * @return 建材生产运输阶段单个
     */
    public TbMaterialProductionPhaseVo selectTbMaterialProductionPhaseVoByProductionId(Long productionId);

    /**
     * 新增建材生产运输阶段
     *
     * @param tbMaterialProductionPhaseQueryDto 建材生产运输阶段编辑实体
     * @return 结果
     */
    public int insertTbMaterialProductionPhase(TbMaterialProductionPhaseEditDto tbMaterialProductionPhaseQueryDto);

    /**
     * 修改建材生产运输阶段
     *
     * @param productionId 主键
     * @param tbMaterialProductionPhaseQueryDto 建材生产运输阶段编辑实体
     * @return 结果
     */
    public int updateTbMaterialProductionPhase(Long productionId, TbMaterialProductionPhaseEditDto tbMaterialProductionPhaseQueryDto);

    /**
     * 批量删除建材生产运输阶段
     *
     * @param productionIds 建材生产运输阶段主键集合
     * @return 结果
     */
    public int deleteTbMaterialProductionPhaseByProductionIds(List<Long> productionIds);

    /**
     * 删除单个建材生产运输阶段信息
     *
     * @param productionId 建材生产运输阶段主键
     * @return 结果
     */
    public int deleteTbMaterialProductionPhaseByProductionId(Long productionId);
}
